/**************************************************************************************************
* Title: SumObjectAlignedBox.h
* Author: Gael Huber
* Description: An object aligned bounding box
**************************************************************************************************/
#ifndef __SUMOBJECTALIGNEDBOX_H__
#define __SUMOBJECTALIGNEDBOX_H__

#include "SumMath.h"

class ObjectAlignedBox {
public:
	// Constructors and destructors
	ObjectAlignedBox(void);
	ObjectAlignedBox(const Vector3_16f& p, const Vector3_16f& d, const Vector3_16f& x, const Vector3_16f& y, const Vector3_16f& z);
	ObjectAlignedBox(const ObjectAlignedBox& rhs);
	~ObjectAlignedBox(void);

	// Assignment operator
	ObjectAlignedBox& operator=(const ObjectAlignedBox& rhs);

	// Equivalence operators
	bool operator==(const ObjectAlignedBox& rhs);
	bool operator!=(const ObjectAlignedBox& rhs);

	// Accessors
	Vector3_16f& position(void);
	const Vector3_16f& position(void) const;
	Vector3_16f& dimensions(void);
	const Vector3_16f& dimensions(void) const;
	Vector3_16f* orientation(void);
	const Vector3_16f* orientation(void) const;

private:
	// Position vector
	Vector3_16f _position;

	// dimensions vector
	Vector3_16f _dimensions;

	// Orientation axes
	Vector3_16f _orientation[3];
};

#endif